#include <vector>
#include <map>
#include <string>

using namespace std;

struct FT
{
public:
	string strFt;
	unsigned int uiGt;
public:
	FT():strFt(""),uiGt(0)
	{

	}
	FT( string str, unsigned int ui )
		:strFt(str),uiGt(ui)
	{

	}
	friend  bool operator< ( const FT& rhs, const FT& lhs )
	{
		if ( rhs.strFt < lhs.strFt )
		{
			return true;
		}
		else if ( rhs.strFt == lhs.strFt )
		{
			if ( rhs.uiGt <= lhs.uiGt )
			{
				return true;
			}
			return false;
		}
		return false;
	}
};


int main()
{
	vector<unsigned int> vec1( 5,6 );
	vector<unsigned int> vec2( 6,7 );
	vector<unsigned int> vec3( 7,8);
	FT ft1( "first", 1 );
	FT ft2( "second", 2 );
	FT ft3( "third", 3 );
	//std::pair<string, unsigned int > pari1 = std::make_pair( "first", 1 );
	//std::pair<string, unsigned int > pari2 = std::make_pair( "second", 2 );
	//std::pair<string, unsigned int > pari3 = std::make_pair( "third", 3 );

	//map<std::pair<string, unsigned int >, vector<unsigned int> > map1;
	//map1[pari1] = vec1;
	//map1[pari2] = vec2;
	//map1[pari3] = vec3;
	map<FT, vector<unsigned int> > map1;
	map1[ft1] = vec1;
	map1[ft2] = vec2;
	map1[ft3] = vec3;
	return 0;
}